// 斐波那契数列
// 1 1 2 3 5 8 13 21 34...
// 求第20项是多少？

// 下面的函数，就是最小功能单元
// function fibo(n) {
//   return fibo(n - 1) + fibo(n - 2)
// }

function fibo(n = 3) {
  // 因为这个数列的前两项都是1，所以有下面的判断
  // 下面的这个判断，实质上是递归的终止条件
  if (n <= 2) {
    return 1
  }
  return fibo(n - 1) + fibo(n - 2)
}

const res = fibo(9)
console.log(res)

// fibo(20) = fibo(19) + fibo(18)
// fibo(19) = fibo(18) + fibo(17)
// fibo(18) = fibo(17) + fibo(16)
// ...
// fibo(3) = fibo(2) + fibo(1)

// 怎么设计递归函数：
// 1. 先找到递归的最小功能单元
// 2. 递归需要有开始条件，或者有终止条件（这两个条件必须得有一个）

// 思考题：
// 1. 使用 setTimeout 延时函数，实现一个 定时器 周期函数
// 延时函数，本质上都是周期函数的最小功能单元

// 2. 已知一个 url 数组，要求按顺序请求数组中的地址

// Axios.get(url[0]).then(Axios.get(url[1])).

// 3. 已知有一个接口 getInfo ，getInfo 调用有一定的概率会出错，请封装一个重试函数 tryTimes，tryTimes 函数的返回值与 getInfo 保持一致

// 4.
